#ifndef DSPSIMULATOR_INSTRUCTION_SPLOOPW_H
#define DSPSIMULATOR_INSTRUCTION_SPLOOPW_H

#include "dspSimulator/targetMachine/dspInstruction.h"
#include "simulator/instruction/instruction.h"

namespace dspsimulator {
    class SPLOOPW : public DspInstruction {
    public:
        explicit SPLOOPW(u64 address = 0, u32 size = 4) :
        DspInstruction("SPLOOPW", address, size) {}

        SPLOOPW(const SPLOOPW &) = default;

        SPLOOPW(SPLOOPW &&) = default;

        SPLOOPW &operator=(const SPLOOPW &) = default;

        SPLOOPW &operator=(SPLOOPW &&) = default;

        u32 ii() const { return m_ii; }

        std::string to_string() const override;

        std::shared_ptr<Instruction> clone() const override { return std::make_shared<SPLOOPW>(*this); }
    protected:
        std::shared_ptr<DspInstruction> decode_standard_instruction(const std::shared_ptr<DspInstructionInfo> &dsp_instruction_info) override;
    private:
        u32 m_ii{0};
    };
}

#endif //DSPSIMULATOR_INSTRUCTION_SPLOOPW_H
